/**
 * @ClassDescription:
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/7/21 15:48
 */
class OuterClass{
    class InnerClass{
        public static final int data1 = 4;//内部类是需要引用外部类才能实现的，但是静态数据不需要引用，所以会矛盾，加个final

        public void function(){
            System.out.println("wuhu");
        }

    }
}








class Out{
    public int data1 = 1;
    public static int data2 = 2;
    public int data3 = 3;
    static class Innerclass{
        public int data4 = 4;
        public static int data5 = 5;
        public int data6 = 6;
        public void function2(){
            Out out = new Out();
            System.out.println(out.data1);
            System.out.println(data2);
            System.out.println(out.data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);
           /* public static final int data1 = 4;//内部类是需要引用外部类才能实现的，但是内部类里的静态数据不需要引用，
            // 所以会矛盾，加个final，这样编译的时候就确定了这个数据*/
        }
    }
}







interface IA{
    public void test();//接口的方法是不允许扩写
    }

public class Test2 {
    public static void main(String[] args) {
        IA ia = new IA(){//匿名内部类
            @Override
            public void test() {
                System.out.println("这是重写了接口的方法");
            }
        };
        ia.test();
        new IA(){//匿名内部类
            @Override
            public void test() {
                System.out.println("这是重写了接口的方法");
            }
        }.test();

    }
    public void function3(){
        class AB{
            public int a = 10;
        }
       /* AB ab = new AB();
        System.out.println(ab.a);*/
    }
    public static void main4(String[] args) {
        Out.Innerclass innerclass = new Out.Innerclass();
        innerclass.function2();

    }
    public static void main2(String[] args) {
        /*OuterClass outerClass = new OuterClass();
        OuterClass.InnerClass innerClass = outerClass.new InnerClass();//内部类必须要有外部类的引用才能使用 */
        OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();//通过外部类来调用内部类
        innerClass.function();
    }
}
